#include "Message.h"

namespace tsc
{
namespace common
{

unsigned int Message::sInstanceCounter = 0x00000000;

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
Message::Message(const void*  aDataP,
                 std::size_t  aDataSize,
                 unsigned int aConnectionId)
: mSize(aDataSize),
  mConnectionId(aConnectionId),
  mInstance(++sInstanceCounter)
{
  mDataP = new char[aDataSize];
  memcpy(reinterpret_cast<void*>(mDataP), aDataP, mSize);
} // Message::Message

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
Message::~Message()
{
  delete[] mDataP;
  mDataP    = 0;
  mSize     = 0;
  mInstance = 0;
} // Message::~Message

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
const void* Message::getData()
{
  return reinterpret_cast<const void*>(mDataP);
} // Message::getData(

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
std::size_t Message::getDataSize()
{
  return mSize;
} // Message::getDataSize

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
unsigned int Message::getConnectionId()
{
  return mConnectionId;
} // Message::getConnectionId

/*******************************************************************************
 *
 *
 *
 ******************************************************************************/
unsigned int Message::getId()
{
  return mInstance;
} // Message::getId


} // namespace common
} // namespace tsc
